package com.onenine.app.utils;

import android.content.Context;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 创建时间：2018/8/8 0008 16:17
 * 创建人：fly
 * 功能描述：本地详情样式
 */
public class LocalCssStyle {

    /**
     * 基本功能：过滤指定标签
     * <p/>
     *
     * @param str
     * @param tag 指定标签
     * @return String
     */
    public static String filterHtmlTag(String str, String tag) {
        if (!str.contains(tag)) {
            return str;
        }
        String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";
        Pattern pattern = Pattern.compile(regxp);
        Matcher matcher = pattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        boolean result1 = matcher.find();
        while (result1) {
            matcher.appendReplacement(sb, "");
            result1 = matcher.find();
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    /**
     * Android 4.4 以上的版本的webview的内核改了，由webkit改为chromium，所以很多方法实现有问题。
     * 4.4以下js交互正常，4.4以上不可以的问题。可以用java代码实现js功能来实现：
     *
     * @param context
     * @param content
     */
    public static String wrapH5DataCssStyle(Context context, String content) {
        //过滤section标签,暂不支持
        content = filterHtmlTag(content, "section");
        StringBuffer sb = new StringBuffer("");
        sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
        sb.append("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />");
        sb.append("<title />");
        sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\""
                + "file:///android_asset/onenine.css\" />");
        sb.append(content);
        Document document = Jsoup.parse(sb.toString());
        Elements eleImgs = document.getElementsByTag("img");
        if (eleImgs.size() != 0) {
            for (Element ele : eleImgs) {
                Attributes attrs = ele.attributes();
                attrs.remove("alt");
                //给img标签增加onclick js事件
                ele.attr("onclick"
                        , "window.js.showBigImage('" + attrs.get("src") + "')");
            }
        }
        return document.toString();
    }

}
